package Response

import (
	"software/models"
	"software/models/mongo"
	"time"
)

// CommentResponse 评论响应
type CommentResponse struct {
	ID         string    `json:"id"`          // 评论ID
	PostID     string    `json:"post_id"`     // 帖子ID
	Content    string    `json:"content"`     // 评论内容
	LikeCount  int       `json:"like_count"`  // 点赞数
	Status     int8      `json:"status"`      // 状态
	CreateTime time.Time `json:"create_time"` // 创建时间
	User       UserInfo  `json:"user"`        // 评论用户信息
}

// UserInfo 用户简要信息
type UserInfo struct {
	ID       uint64 `json:"id"`       // 用户ID
	Nickname string `json:"nickname"` // 昵称
	Avatar   string `json:"avatar"`   // 头像
}

// CommentListResponse 评论列表响应
type CommentListResponse struct {
	Total    int64             `json:"total"`     // 总数
	Page     int               `json:"page"`      // 当前页
	PageSize int               `json:"page_size"` // 每页数量
	List     []CommentResponse `json:"list"`      // 评论列表
}

// BuildCommentResponse 构建评论响应
func BuildCommentResponse(comment *mongo.Comment, user *models.User) CommentResponse {
	return CommentResponse{
		ID:         comment.ID.Hex(),
		PostID:     comment.PostID.Hex(),
		Content:    comment.Content,
		LikeCount:  comment.LikeCount,
		Status:     comment.Status,
		CreateTime: comment.CreateTime,
		User: UserInfo{
			ID:       user.ID,
			Nickname: user.Nickname,
			Avatar:   user.Avatar,
		},
	}
}

// BuildCommentListResponse 构建评论列表响应
func BuildCommentListResponse(comments []CommentResponse, total int64, page, pageSize int) CommentListResponse {
	return CommentListResponse{
		Total:    total,
		Page:     page,
		PageSize: pageSize,
		List:     comments,
	}
}
